package com.dys.hejiayuncommunity.system.service;

import com.dys.hejiayuncommunity.system.domain.LoginUser;

import javax.servlet.http.HttpServletRequest;

/**
 * @className: com.dys.hejiayuncommunity.system.service.TokenService
 * @description: com.dys.hejiayuncommunity.system.service
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/12/19 22:26
 */
public interface TokenService {

    /**
     * 创建令牌
     *
     * @param loginUser 登录用户
     * @return token令牌
     */
    String createToken(LoginUser loginUser);

    /**
     * 刷新令牌有效期
     *
     * @param loginUser 登录用户,权限对象
     */
    void refreshToken(LoginUser loginUser);

    /**
     * 从Redis获取用户身份信息
     *
     * @param request 请求对象
     * @return 用户身份信息
     */
    LoginUser getLoginUser(HttpServletRequest request);

    /**
     * 验证token令牌的有效期
     *
     * @param loginUser 用户信息
     */
    void verifyToken(LoginUser loginUser);

    /**
     * 设置登录用户信息
     *
     * @param loginUser 登录用户权限信息
     */
    void setLoginUser(LoginUser loginUser);

    /**
     * 删除登录用户信息
     *
     * @param token token令牌
     */
    void delLoginUser(String token);
}
